<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>实例成员</title>
</head>

<body>
    <p>通过构造函数创建的对象称为实例对象，实例对象中的属性和方法称为实例成员</p>

    <p>
        总结：<br>

        1. 构造函数内部 this 实际上就是实例对象，为其动态添加的属性和方法即为实例成员 <br>
        2. 为构造函数传入参数，动态创建结构相同但值不同的对象 <br>
        注：构造函数创建的实例对象彼此独立互不影响。
    </p>
    <script>
        // 构造函数
        function Person() {
            // 构造函数内部的this就是实例对象
            // 实例对象中动态添加属性
            this.name = '小明'
            // 实例对象动态添加方法
            this.sayHi = () => console.log('大家好~');
        }
        // 实例化，p1是实例对象； p1实际就是构造函数内部的this
        const p1 = new Person()
        console.log(p1); // Person {name: '小明', sayHi: ƒ}
        console.log(p1.name); // 小明 访问实例属性
        p1.sayHi() // 大家好~ 访问实例方法



        function Person1(name, age) {
            this.name = name;
            this.age = age;
            this.eyes = 2; // 实例属性  
            this.arms = 2; // 实例属性  

            // 实例方法  
            this.walk = function () {
                console.log('人都会走路');
                console.log(this.eyes); // 访问实例属性  
            };
        }

        // 创建一个Person实例  
        var person1 = new Person1('Alice', 30);
        person1.walk(); // 输出: 人都会走路 和 2  

        // 注意：每个实例都会有自己的walk方法和eyes、arms属性  
        var person2 = new Person1('Bob', 25);
        person2.walk(); // 输出: 人都会走路 和 2
    </script>

</body>

</html>